
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<HTML>

<HEAD>
   <TITLE>ekssum_c</TITLE>
</HEAD>

<BODY style="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);">
<A name="TOP"></A>

<table style="text-align: left; margin-left: auto; margin-right: auto; width: 800px;"
 border="0" cellpadding="5" cellspacing="2">
  <tbody>
    <tr>
      <td style="background-color: rgb(153, 153, 153); vertical-align: middle; text-align: center;">
      <div align="right"> 
      <small><small><a href="index.html">Index Page</a></small></small>
      </div>
      <b>ekssum_c</b> </td>
    </tr>

    <tr>
      <td style="vertical-align: top;">

<small><div align="center">
<A HREF="index.html#A">A</A>&nbsp;
<A HREF="index.html#B">B</A>&nbsp;
<A HREF="index.html#C">C</A>&nbsp;
<A HREF="index.html#D">D</A>&nbsp;
<A HREF="index.html#E">E</A>&nbsp;
<A HREF="index.html#F">F</A>&nbsp;
<A HREF="index.html#G">G</A>&nbsp;
<A HREF="index.html#H">H</A>&nbsp;
<A HREF="index.html#I">I</A>&nbsp;
<A HREF="index.html#J">J</A>&nbsp;
<A HREF="index.html#K">K</A>&nbsp;
<A HREF="index.html#L">L</A>&nbsp;
<A HREF="index.html#M">M</A>&nbsp;
<A HREF="index.html#N">N</A>&nbsp;
<A HREF="index.html#O">O</A>&nbsp;
<A HREF="index.html#P">P</A>&nbsp;
<A HREF="index.html#Q">Q</A>&nbsp;
<A HREF="index.html#R">R</A>&nbsp;
<A HREF="index.html#S">S</A>&nbsp;
<A HREF="index.html#T">T</A>&nbsp;
<A HREF="index.html#U">U</A>&nbsp;
<A HREF="index.html#V">V</A>&nbsp;
<A HREF="index.html#W">W</A>&nbsp;
<A HREF="index.html#X">X</A>&nbsp;
</div></small>
       <br>
       <table style="text-align: left; width: 60%; margin-left: auto; margin-right: auto;"
       border="0" cellspacing="2" cellpadding="2">
        <tbody>
          <tr>
            <td style="width: 50%; text-align: center;">
            <small>
              <a href="#Procedure">Procedure<br></a>
              <a href="#Abstract">Abstract<br></a>
              <a href="#Required_Reading">Required_Reading<br></a>
              <a href="#Keywords">Keywords<br></a>
              <a href="#Brief_I/O">Brief_I/O<br></a>
              <a href="#Detailed_Input">Detailed_Input<br></a>

              </small>
              </td>
              <td style="vertical-align: top; width: 50%; text-align: center;">
              <small>               <a href="#Detailed_Output">Detailed_Output<br></a>
              <a href="#Parameters">Parameters<br></a>
              <a href="#Exceptions">Exceptions<br></a>
              <a href="#Files">Files<br></a>
              <a href="#Particulars">Particulars<br></a>
              <a href="#Examples">Examples<br></a>

              </small>
              </td>
              <td style="vertical-align: top; width: 50%; text-align: center;">
              <small>               <a href="#Restrictions">Restrictions<br></a>
              <a href="#Literature_References">Literature_References<br></a>
              <a href="#Author_and_Institution">Author_and_Institution<br></a>
              <a href="#Version">Version<br></a>
              <a href="#Index_Entries">Index_Entries<br></a>
             </small>
            </td>
          </tr>
        </tbody>
</table>

<h4><a name="Procedure">Procedure</a></h4>
<PRE>
   void ekssum_c ( SpiceInt           handle,
                   SpiceInt           segno,
                   SpiceEKSegSum    * segsum )
</PRE>
<h4><a name="Abstract">Abstract</a></h4>
<PRE>
 
   Return summary information for a specified segment in a 
   specified EK. 
 </PRE>
<h4><a name="Required_Reading">Required_Reading</a></h4>
<PRE>
 
   <a href="../req/ek.html">EK</a> 
 </PRE>
<h4><a name="Keywords">Keywords</a></h4>
<PRE>
 
   EK 
   UTILITY 
 

</PRE>
<h4><a name="Brief_I/O">Brief_I/O</a></h4>
<PRE>
 
   Variable  I/O  Description 
   --------  ---  -------------------------------------------------- 
   handle     I   Handle of EK. 
   segno      I   Number of segment to be summarized. 
   segsum     O   EK segment summary.
   </PRE>
<h4><a name="Detailed_Input">Detailed_Input</a></h4>
<PRE>
 
   handle         is an EK file handle specifying the EK containing 
                  the segment to be summarized. 
 
   segno          is the number of the segment whose summary is 
                  desired.  Segments are numbered from 0 to nseg-1, 
                  where nseg is the count of segments in the file. 
 </PRE>
<h4><a name="Detailed_Output">Detailed_Output</a></h4>
<PRE>
 
 
   segsum         is a pointer to an EK segment summary.  The summary is
                  of type EKSegSum.  The structure contains the 
                  following members:

                     tabnam      The name of the table to which the 
                                 segment belongs. 
   
                     nrows       The number of rows in the segment. 
   
                     ncols       The number of columns in the segment.
   
                     cnames      An array of names of columns in the 
                                 segment. Column names may contain 
                                 as many as SPICE_EK_CNAMSZ characters. 
                                 The array contains room for 
                                 SPICE_EK_MXCLSG column names.
   
                     cdescrs     An array of column attribute 
                                 descriptors of type SpiceEKAttDsc.
                                 The array contains room for 
                                 SPICE_EK_MXCLSG descriptors.  The Ith
                                 descriptor corresponds to the column 
                                 whose name is the Ith element of the 
                                 array cnames.

 
                  The column attribute descriptors have the following
                  members:
                  
                     cclass:     Column class code.
 
                     dtype:      Data type code:  has type
                                 SpiceEKDataType.
                                 
                     strlen:     String length.  Applies to SPICE_CHR 
                                 type.  Value is SPICE_EK_VARSIZ for 
                                 variable-length strings. 
 
                     size:       Column entry size; this is the number
                                 of array elements in a column entry. 
                                 The value is SPICE_EK_VARSIZ for
                                 variable-size columns. 
 
                     indexd:     Index flag; value is SPICETRUE if the
                                 column is indexed, SPICEFALSE 
                                 otherwise. 
 
                     nullok:     Null flag; value is SPICETRUE if the 
                                 column may contain null values, 
                                 SPICEFALSE otherwise. 
            </PRE>
<h4><a name="Parameters">Parameters</a></h4>
<PRE>
 
   See the Restrictions section.
   </PRE>
<h4><a name="Exceptions">Exceptions</a></h4>
<PRE>
 
   1)  If handle is invalid, the error will be diagnosed by routines 
       called by this routine.  The output arguments will not be 
       modified. 
 
   2)  If segno is not the index of an existing segment in the 
       specified file, the error SPICE(INDEXOUTOFRANGE) will be 
       signalled.  The output arguments will not be modified. 
 
   3)  If an I/O error occurs while attempting to obtain summary 
       information for the specified segment, the error will be 
       diagnosed by routines called by this routine.  The output 
       arguments may be modified in this case. 
 </PRE>
<h4><a name="Files">Files</a></h4>
<PRE>
 
   This routine provides summary information for segments belonging
   to a binary EK file. 
 </PRE>
<h4><a name="Particulars">Particulars</a></h4>
<PRE>
 
   This routine supports the function of summarizing a binary 
   EK file, allowing NAIF Toolkit users to determine whether it 
   contains data of interest.  
    </PRE>
<h4><a name="Examples">Examples</a></h4>
<PRE>
 
   1)  Dump the attributes of the segments in a specified EK. 


          #include &quot;SpiceUsr.h&quot;
          #include &lt;stdio.h&gt;

          void main()
          {
          
             SpiceChar             * ek;
             static SpiceChar        chrTypes [4][5] = { &quot;CHR&quot;,
                                                         &quot;DP&quot;,
                                                         &quot;INT&quot;,
                                                         &quot;TIME&quot; };
             SpiceEKSegSum           segsum;
             
             SpiceInt                handle;
             SpiceInt                i;
             SpiceInt                nseg;
             SpiceInt                segno;



             ek  =  <a href="prompt_c.html">prompt_c</a> ( &quot;Enter name of EK file &gt; &quot; );

             /.
             Open the EK for read access and get the number of 
             segments it contains. 
             ./ 
             <a href="ekopr_c.html">ekopr_c</a> ( ek, &amp;handle ); 
    
             nseg = <a href="eknseg_c.html">eknseg_c</a> ( handle ); 
    
             /. 
             Loop through the segments, dumping the desired 
             summary information for each one. 
             ./
             printf ( &quot;\n&quot;
                      &quot;\n&quot;
                      &quot;Segment summary for file %s\n&quot;
                      &quot;\n&quot;
                      &quot;\n&quot;,
                      ek                            );
   
             for ( segno = 0;  segno &lt; nseg;  segno++ )
             {
             
                <b>ekssum_c</b> (  handle,  segno,  &amp;segsum ); 
    
    
                printf ( &quot;========================================&quot;
                         &quot;========================================&quot; 
                         &quot;\n&quot; 
                         &quot;Table containing segment:  %s\n&quot; 
                         &quot;\n&quot; 
                         &quot;Number of rows:     %d\n&quot; 
                         &quot;Number of columns:  %d\n&quot; 
                         &quot;\n&quot; 
                         &quot;Column names and attributes: \n&quot; 
                         &quot;\n&quot;,
                         segsum.tabnam,
                         segsum.nrows,
                         segsum.ncols                            );
                         
   
                for ( i = 0;  i &lt; segsum.ncols;  i++ )
                {
                
                   printf ( &quot;\n&quot;
                            &quot;Column:   %s\n&quot;
                            &quot;\n&quot;
                            &quot;Data type:      %s\n&quot;,
                            segsum.cnames[i],
                            chrTypes[ segsum.cdescrs[i].dtype ]     );
    
    
                   if ( segsum.cdescrs[i].size &gt;= 0 )
                   {
                      printf ( &quot;Dimension:      %d\n&quot;, 
                                segsum.cdescrs[i].size );
                   }
                   else
                   {
                      printf ( &quot;Dimension:      Variable\n&quot; );
                   }
    
    
                   if ( segsum.cdescrs[i].dtype == SPICE_CHR )
                   {
                      if ( segsum.cdescrs[i].strlen &gt;= 0 )
                      {
                         printf ( &quot;String length:  %d\n&quot;, 
                                   segsum.cdescrs[i].strlen         );
                      }
                      else
                      {
                         printf ( &quot;String length:  Variable\n&quot; );
                      }
                   }
    
    
                   if ( segsum.cdescrs[i].indexd )
                   {
                       printf ( &quot;Indexed\n&quot; );
                   }
       
       
                   if ( segsum.cdescrs[i].nullok )
                   {
                       printf ( &quot;Nulls allowed\n&quot; );
                   }
                   
                   printf ( &quot;\n&quot; );
   
                }
   
                printf ( &quot;\n&quot;
                         &quot;========================================&quot;
                         &quot;========================================&quot; 
                         &quot;\n&quot;                                       );
             }
          }
          
 </PRE>
<h4><a name="Restrictions">Restrictions</a></h4>
<PRE>
 
   Many parameters used internally in this routine are from the 
   Fortran SPICELIB include files ekcoldsc.inc and eksegdsc.inc.
   The parameters used in this routine must be kept in sync with
   those used in SPICELIB. 
 </PRE>
<h4><a name="Literature_References">Literature_References</a></h4>
<PRE>
 
   None. 
 </PRE>
<h4><a name="Author_and_Institution">Author_and_Institution</a></h4>
<PRE>
 
   N.J. Bachman   (JPL) 
 </PRE>
<h4><a name="Version">Version</a></h4>
<PRE>
 
   -CSPICE Version 1.1.0, 12-JUL-1999 (NJB)

       Now calls zzeksinf_ instead of ekssum_ to get summary 
       information.  This enables retrieval of column classes and 
       simplifies the code as well.
       
       Changed arrays of SpiceBoolean flags passed to ekssum_ to
       data type logical.  Changed name of &quot;class&quot; member of structure
       SpiceEKSegSum to &quot;cclass.&quot;  The name &quot;class&quot; is a C++ keyword
       and prevented clean integration into C++ code.
       
   -CSPICE Version 1.0.0, 17-FEB-1999 (NJB)
</PRE>
<h4><a name="Index_Entries">Index_Entries</a></h4>
<PRE>
 
   return EK segment summary 
 </PRE>
<h4>Link to routine ekssum_c source file <a href='../../../src/cspice/ekssum_c.c'>ekssum_c.c</a> </h4>

      </td>
    </tr>
  </tbody>
</table>

   <pre>Wed Jun  9 13:05:22 2010</pre>

</body>
</html>

